package org.convallaria.infrastruct.rg.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.stereotype.Service;

/**
 * 空操作配置管理服务
 * 当Nacos配置中心不可用时提供基本的配置管理功能
 * 
 * @author gjh
 * @since 2025-01-27
 */
@Slf4j
@Service
@ConditionalOnMissingBean(ConfigManagementService.class)
public class NoOpConfigManagementService {
    
    public String getConfig(String dataId, String group) {
        log.warn("配置管理服务不可用，返回空配置: dataId={}, group={}", dataId, group);
        return null;
    }
    
    public String getConfig(String dataId, String group, String defaultValue) {
        log.warn("配置管理服务不可用，返回默认值: dataId={}, group={}, defaultValue={}", dataId, group, defaultValue);
        return defaultValue;
    }
    
    public boolean publishConfig(String dataId, String group, String content) {
        log.warn("配置管理服务不可用，无法发布配置: dataId={}, group={}", dataId, group);
        return false;
    }
    
    public boolean removeConfig(String dataId, String group) {
        log.warn("配置管理服务不可用，无法删除配置: dataId={}, group={}", dataId, group);
        return false;
    }
    
    public void addListener(String dataId, String group, com.alibaba.nacos.api.config.listener.Listener listener) {
        log.warn("配置管理服务不可用，无法添加监听器: dataId={}, group={}", dataId, group);
    }
    
    public void removeListener(String dataId, String group, com.alibaba.nacos.api.config.listener.Listener listener) {
        log.warn("配置管理服务不可用，无法移除监听器: dataId={}, group={}", dataId, group);
    }
    
    public boolean configExists(String dataId, String group) {
        log.warn("配置管理服务不可用，配置不存在: dataId={}, group={}", dataId, group);
        return false;
    }
    
    public ConfigManagementService.ConfigInfo getConfigInfo(String dataId, String group) {
        log.warn("配置管理服务不可用，无法获取配置信息: dataId={}, group={}", dataId, group);
        return null;
    }
}
